; 实验12 编写0号中断处理程序
assume cs:codesg

codesg segment

start:  ; 安装0号中断处理程序do0
        ; 设置传送的数据源 
        mov ax,cs
        mov es,ax
        mov di,offset do0
        ; 设置传输的目的地址
        mov ax,0h
        mov ds,ax
        mov si,200h
        ; 设置传递长度
        mov cx,offset do0end - offset do0
        ; 设置传递方向
        cld
        ; 开始传递
        rsp  movsb
        mov ax,0
        ; 设置0号中断程序入口地址
        mov es,ax
        mov word ptr es:[0],200h
        mov word ptr es:[2],0
        mov ax,4c00h
        int 21h

do0:    jmp short do0start
        ; 显示字符串，定义在do0段内
        db 'div overflow!'
do0start:
        mov ax,cs
        mov es,ax
        ; do0定位在200h,显示字符串位置202h,jmp short do0start 指令长度为2
        mov di,202h
        ; 指定显示位置
        mov ax,0B800h
        mov si,12*160+36*2
        mov cx,13
    s:  
        mov al,es:[di]
        mov ds:[si],al
        inc di
        add si,2
        loop s
        mov ax,4c00h
        int 21h
do0end: nop

codesg ends
end start